package com.ikas.autumn.iec104.module.iec.apdunew;


import com.ikas.autumn.iec104.module.iec.utils.Iec104Util;

/**
 * @author 张雨
 * 
 */
public class ParamePreset104 {
	/**
	 * 读单个参数命令(参数设置)
	 * 
	 * @param infoElement
	 * @return
	 */
	public String singleParameter(int[] infoElement) {
		StringBuilder str = new StringBuilder();

		str.append("信息对象地址：");
		str.append(AsduVo.infoAddress(infoElement[0], infoElement[1],
				infoElement[2]));
		str.append("\n");
		str.append("参数设置对象信息值：");
		str.append(Iec104Util.toHexString(infoElement[3]));
		str.append("  ");
		str.append(Iec104Util.toHexString(infoElement[4]));
		str.append("  ");
		str.append(Iec104Util.toHexString(infoElement[5]));
		str.append("  ");
		str.append(Iec104Util.toHexString(infoElement[6]));
		str.append("\n");

		return str.toString();
	}

	/**
	 * 读多个参数命令(参数设置)
	 * 
	 * @param infoElement
	 * @param num
	 * @return
	 */
	public String multiParameter(int[] infoElement, int num) {
		StringBuilder str = new StringBuilder();
		for (int i = 0; i < num; i++) {
			str.append("信息对象");
			str.append (i + 1);
			str.append("地址：");
			str.append(AsduVo.infoAddress(infoElement[i * 7],
					infoElement[i * 7 + 1], infoElement[i * 7 + 2]));
			str.append("\n");
			str.append("参数设置对象信息值：");
			str.append(Iec104Util.toHexString(infoElement[i * 7 + 3]));
			str.append("  ");
			str.append(Iec104Util.toHexString(infoElement[i * 7 + 4]));
			str.append("  ");
			str.append(Iec104Util.toHexString(infoElement[i * 7 + 5]));
			str.append("  ");
			str.append(Iec104Util.toHexString(infoElement[i * 7 + 6]));
			str.append("\n");
		}
		return str.toString();
	}

	/**
	 * 预置/激活多个参数命令(参数设置)
	 * 
	 * @param infoElement
	 * @param num
	 * @return
	 */
	public String activateMultiParameter(int[] infoElement, int num) {
		StringBuilder str = new StringBuilder();
		for (int i = 0; i < num; i++) {
			str.append("信息对象");
			str.append(i + 1);
			str.append("地址：");
			str.append(AsduVo.infoAddress(infoElement[i * 7],
					infoElement[i * 7 + 1], infoElement[i * 7 + 2]));
			str.append("\n");
			str.append("预置/激活参数命令对象信息值：");
			str.append(Iec104Util.toHexString(infoElement[i * 7 + 3]));
			str.append("  ");
			str.append(Iec104Util.toHexString(infoElement[i * 7 + 4]));
			str.append("  ");
			str.append(Iec104Util.toHexString(infoElement[i * 7 + 5]));
			str.append("  ");
			str.append(Iec104Util.toHexString(infoElement[i * 7 + 6]));
			str.append("\n");
		}
		str.append("设定命令限定词QOS：");

		str.append(Iec104Util
				.toHexString(infoElement[infoElement.length - 1]));
		str.append("  ");
		if (infoElement[infoElement.length - 1] == 0x80) {
			str.append("预置参数");
		} else if (infoElement[infoElement.length - 1] == 0x00) {
			str.append("激活参数");

		}
		str.append("\n");
		return str.toString();
	}

	/**
	 * 预置/激活单个参数命令(参数设置)
	 * 
	 * @param infoElement
	 * @return
	 */
	public String activateSingleParameter(int[] infoElement) {
		StringBuilder str = new StringBuilder();

		str.append("信息对象地址：");
		str.append(AsduVo.infoAddress(infoElement[0], infoElement[1],
				infoElement[2]));
		str.append("\n");
		str.append("预置/激活参数命令对象信息值：");
		str.append(Iec104Util.toHexString(infoElement[3]));
		str.append("  ");
		str.append(Iec104Util.toHexString(infoElement[4]));
		str.append("  ");
		str.append(Iec104Util.toHexString(infoElement[5]));
		str.append("  ");
		str.append(Iec104Util.toHexString(infoElement[6]));
		str.append("\n");
		str.append("设定命令限定词QOS：");

		str.append(Iec104Util.toHexString(infoElement[7]));
		str.append("  ");
		if (infoElement[7] == 0x80) {
			str.append("预置参数");
		} else if (infoElement[7] == 0x00) {
			str.append("激活参数");

		}
		str.append("\n");
		return str.toString();
	}

}
